def magic_number(n: int):
    for i in range(3):
        yield (i + 1) ** n


def magic_data():
    # for i in magic_number(2):
    #     yield i
    # 上面两行等同于下面这一行
    yield from magic_number(2)
    yield from magic_number(3)


def main():
    num = yield "Please input"

    while True:
        num = yield 2 ** num

        if num is None:
            break


# for n in magic_data():
#     print(n)

a = main()
print(next(a))  # 打印出Please input
# send操作，分两步
# a.send(2)
# 第一步 赋值 num = 2（第一个yield在等待）
# 第二步 执行next yield 2 ** 2
print(a.send(2))
# 第一步 赋值 num = 4（第二个yield在等待）
# 第二步 因为num 不是 None 所以代码循环到了 num = yield 2 ** num
# 第三步 执行next yield 2 ** 4
print(a.send(4))

# try:
# print(a.send(None))
# except StopIteration:
#     print("stop")